(Quick Reference)

test-app

Purpose

Runs all Grails unit and integration tests and generates reports. The command returns appropriate response codes for embedding with continuous integration servers.

Examples

grails test-app
grails test-app Foo
grails test-app Foo Bar

Description

Usage:

grails <<environment>>* test-app <<names>>* [-unit] [-integration] [-continuous]

Fired Events:

Executes the Grails unit and integration tests located in the src/test/groovy and src/integration-test/groovy directories. By default all tests are executed, but you can specify the names of the tests (without the "Tests" or other test type suffix) as argument to the command:

grails test-app *Foo*
grails test-app *Foo* *Bar*

The first example will execute a test called FooSpec.groovy whilst the second will execute FooSpec.groovy and BarSpec.groovy if they exist.

The task of finding tests that match the pattern you provide is passed to Gradle. Take a look at the section in their docs titled Test filtering for more information.

You can also choose to only run the unit or integration tests:

grails test-app -unit
grails test-app -integration

Continuous Testing

grails
grails> test-app -continuous

The -continuous option starts Grails' DirectoryWatcher. It watches .groovy and .java files in grails-app, src/main/groovy, src/test/groovy, and src/integration-test/groovy. Creating or changing a watched file reruns the tests selected by the command options and test name patterns.

Continuous mode does not run tests when it starts. It is intended for the Grails interactive CLI, where the watcher remains active until you exit the CLI. A one-off grails test-app -continuous command exits immediately because DirectoryWatcher runs on a daemon thread. Stop interactive continuous testing by exiting the CLI or pressing Ctrl+C.

This is not Gradle’s --continuous mode. Grails does not pass --continuous to Gradle, and --watch is not an alias for -continuous. Files outside the watched directories, including Java source directories such as src/main/java, do not trigger a rerun.

See the Testing section for examples on how to combine the different options to target tests.